package com.ruoyi.datastatistics.service;

import com.ruoyi.datastatistics.vo.DbUsageVO;
import com.ruoyi.datastatistics.vo.XbTypeStatisticVO;
import com.ruoyi.datastatistics.vo.UsageVO;
import com.ruoyi.datastatistics.vo.YesterdayAreaDosageVO;

import java.util.List;
import java.util.Map;

/**
 * 主页相关Service层
 *
 * @author TsingYu
 * @version 2.0
 * @date 2024/6/24 16:15
 */
public interface HomepageService {
    /**
     * 小表主页数据-基础
     *
     * @param map map
     * @return Map
     */
    Map<String, Object> getHomepageDataForXb(Map<String, Object> map);

    /**
     * 小表主页数据-抄回数据
     *
     * @param map map
     * @return Map
     */
    Map<String, Object> getHomepageCopyDataForXb(Map<String, Object> map);

    /**
     * 小表主页数据-月用量数据
     *
     * @param map map
     * @return List
     */
    List<UsageVO> getHomepageMonthUsageDataForXb(Map<String, Object> map);

    /**
     * 小表主页数据-日用量数据
     *
     * @param map map
     * @return List
     */
    List<UsageVO> getHomepageDayUsageDataForXb(Map<String, Object> map);

    /**
     * 根据小表类型统计小表数量
     *
     * @param map map
     * @return Map
     */
    List<XbTypeStatisticVO> getXbCountByType(Map<String, Object> map);

    /**
     * 获取小表昨日用量前N设备
     *
     * @param map map
     * @return List
     */
    List<DbUsageVO> getYesterdayXbUsageTopN(Map<String, Object> map);

    /**
     * 大表主页数据
     *
     * @param map map
     * @return Map
     */
    Map<String, Object> getHomepageDataForDb(Map<String, Object> map);

    /**
     * 获取大表昨日用量前十设备
     *
     * @param map map
     * @return List
     */
    List<DbUsageVO> getYesterdayDbUsageTop10(Map<String, Object> map);


    /**
     * 获取大表昨日夜间小流前十设备
     *
     * @param map map
     * @return List
     */
    List<DbUsageVO> getYesterdayDbNightMinFlowTop10(Map<String, Object> map);

    /**
     * 大表主页数据-月用量数据
     *
     * @param map map
     * @return List
     */
    List<UsageVO> getHomepageMonthUsageDataForDb(Map<String, Object> map);

    /**
     * 大表主页数据-日用量数据
     *
     * @param map map
     * @return List
     */
    List<UsageVO> getHomepageDayUsageDataForDb(Map<String, Object> map);

    /**
     * 分区域获取设备数据
     * @param map map
     * @return Map
     */
    Map<String,Object> getTerminalDateGroupBySheetsId(Map<String, Object> map);
    /**
     * 获取大屏基础数据
     * @param map map
     * @return Map
     */
    Map<String,Object> getDataForBigScreen(Map<String, Object> map);

    /**
     * 获取昨日户表区域日用水量排名前五的区域
     *
     * @param map map
     * @return List
     */
    List<YesterdayAreaDosageVO> getYesterdayAreaTop5ForDosageXb(Map<String, Object> map);
}
